package com.ruoyi.system.service.impl;

import java.lang.reflect.Array;
import java.time.LocalDate;
import java.util.*;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.ResiDataMapper;
import com.ruoyi.system.domain.ResiData;
import com.ruoyi.system.service.IResiDataService;
import com.ruoyi.common.core.text.Convert;

import static com.ruoyi.common.utils.PageUtils.startPage;

/**
 * 遥感数据管理Service业务层处理
 *
 * @author ruoyi
 * @date 2024-03-20
 */
@Service
public class ResiDataServiceImpl implements IResiDataService
{
    @Autowired
    private ResiDataMapper resiDataMapper;

    /**
     * 查询遥感数据管理
     *
     * @param id 遥感数据管理主键
     * @return 遥感数据管理
     */
    @Override
    public ResiData selectResiDataById(Long id)
    {
        return resiDataMapper.selectResiDataById(id);
    }

    /**
     * 查询遥感数据管理列表
     *
     * @param resiData 遥感数据管理
     * @return 遥感数据管理
     */
    @Override
    public List<ResiData> selectResiDataList(ResiData resiData)
    {
        return resiDataMapper.selectResiDataList(resiData);
    }

    /**
     * 新增遥感数据管理
     *
     * @param resiData 遥感数据管理
     * @return 结果
     */
    @Override
    public int insertResiData(ResiData resiData)
    {
        return resiDataMapper.insertResiData(resiData);
    }

    /**
     * 修改遥感数据管理
     *
     * @param resiData 遥感数据管理
     * @return 结果
     */
    @Override
    public int updateResiData(ResiData resiData)
    {
        return resiDataMapper.updateResiData(resiData);
    }

    /**
     * 批量删除遥感数据管理
     *
     * @param ids 需要删除的遥感数据管理主键
     * @return 结果
     */
    @Override
    public int deleteResiDataByIds(String ids)
    {
        return resiDataMapper.deleteResiDataByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除遥感数据管理信息
     *
     * @param id 遥感数据管理主键
     * @return 结果
     */
    @Override
    public int deleteResiDataById(Long id)
    {
        return resiDataMapper.deleteResiDataById(id);
    }

    @Override
    public ArrayList areaService(Date date) {
        ResiData resiData = new ResiData();
        resiData.setDate(date);
        resiData.setA(0.2);
        resiData.setB(0.4);
        Long sum = resiDataMapper.areaService(resiData);
        ArrayList<Long> objects = new ArrayList<>();
        objects.add(sum);
        return objects;
    }


    public String[] getYearlyAverages() {
        String [] years = new String[11];
        years[0]= "2013";
        years[1]= "2014";
        years[2]= "2015";
        years[3]= "2016";
        years[4]= "2017";
        years[5]= "2018";
        years[6]= "2019";
        years[7]= "2020";
        years[8]= "2021";
        years[9]= "2022";
        years[10]= "2023";
        String[][] allData =new String[11][5];
        List<ResiData> resiData = null;
        for (int i = 0; i < 11; i++) {
            resiData = resiDataMapper.selectYearlyAverages(years[i]);
            allData[i][0] = resiData.get(0).getRESI();
            allData[i][1] = resiData.get(0).getNDBSI();
            allData[i][2] = resiData.get(0).getNDVI();
            allData[i][3] = resiData.get(0).getWET();
            allData[i][4] = resiData.get(0).getLST();

        }
        String [] data = new String[55];
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 5; j++) {
                data [i*5+j] = allData[i][j];
            }
        }
        return data;
    }
}
